package com.example.jvm.chapter02;

public class RuntimeConstantPoolOOM {
    public static void main(String[] args) {
        String str1 = new StringBuilder("计算机").append("软件").toString();
        System.out.println(str1.intern() == str1);
        String str2 = new StringBuilder("ja").append("va").toString();
        // "java"这个关键字在内部常量池中已经存在
        System.out.println(str2.intern() == str2);
        // 对于""这种引起来的字面量，都是存在常量池里面的
        // 当调用intern()方时，如果池中已经包含一个与此对象相等的字符串(由equal方法确定)，则返回池中的字符串。否则，将此对象添加到池中并返回对【此对象的引用】
        // stringBuilder.toString() 都会创建一个新字符串 也就是相当于是new String()
        String a = new StringBuilder("app").append("le").toString();
        System.out.println(a.intern() == a);
        String b = new StringBuilder("orange").toString();
        System.out.println(b.intern() == b);
    }
}
